/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.database.bean;

import com.database.dao.BaseConocimientoDao;
import com.database.dao.impl.BaseConocimientoDaoImplement;
import com.database.model.BaseConocimiento;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author diego
 */
@ManagedBean(name="BaseConocimientoBean")
@SessionScoped
public class BaseConocimientoBean {

   
    private BaseConocimiento solucion;
    private List<BaseConocimiento> soluciones;
    private String descripcionProvisional;
    private String destination = "C:\\Users\\diego\\Documents\\NetBeansProjects\\Imagen_Servidor\\trunk\\CRI\\web\\resources\\fotos\\";
    private String nombre;
    private UploadedFile file;  
    
    public BaseConocimientoBean() {
    }
    
    public BaseConocimiento getSolucion() {
        
        if(solucion==null){
            solucion=new BaseConocimiento();
        }
        return solucion;
    }

    public void setSolucion(BaseConocimiento solucion) {
        this.solucion = solucion;
    }


    public List<BaseConocimiento> getSoluciones() {
        BaseConocimientoDao baseConocimientoDao = new BaseConocimientoDaoImplement();
        soluciones= baseConocimientoDao.buscarTodos();
        return soluciones;
    }
    
     public void preparInsertar(){
        solucion = new BaseConocimiento();
    }
    
     public void prepararSolucion(Integer id){
         BaseConocimientoDao baseConocimientoDao = new BaseConocimientoDaoImplement();
         solucion= baseConocimientoDao.buscarPorId(id);
    }
    
    public void insertar(){
         solucion.setSoporte(nombre);
         BaseConocimientoDao baseConocimientoDao = new BaseConocimientoDaoImplement();
         baseConocimientoDao.insertar(solucion);
         solucion = new BaseConocimiento();
    }
    
     public void actualizar(){
         solucion.setSoporte(nombre);
         BaseConocimientoDao baseConocimientoDao = new BaseConocimientoDaoImplement();
         baseConocimientoDao.actualizar(solucion);
         solucion = new BaseConocimiento();
    }
     
     public void eliminar(){
         BaseConocimientoDao baseConocimientoDao = new BaseConocimientoDaoImplement();
         baseConocimientoDao.eliminar(solucion); 
         solucion = new BaseConocimiento();
     }
     
   public void upload(FileUploadEvent event) {
        FacesMessage msg = new FacesMessage("Perfecto ! ", event.getFile().getFileName() + "El archivo ha sido cargado.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
        // Do what you want with the file.
        try {
            copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
            this.nombre=event.getFile().getFileName();
            System.err.println(nombre);
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("No se pudo copiar");
        }



    }

    public void copyFile(String fileName, InputStream in) {
        try {
            // write the inputStream to a FileOutputStream
            OutputStream out = new FileOutputStream(new File(destination + fileName));
            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = in.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            in.close();
            out.flush();
            out.close();

             System.out.println("New file created!");
        } catch (IOException e) {
              System.err.println(e.getMessage());
        }
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public UploadedFile getFile() {  
        return file;  
    }  
   
    public void setFile(UploadedFile file) {  
        this.file = file;  
    }  
    
    
}
     
    

